package api;

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Set;

public class LinkedHashMapDemo1 {
    public static void main(String[] args) {
        //hashMap不会记录元素的插入顺序
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("day01", 100);
        hashMap.put("day02",22);
        hashMap.put("day03",50);
        hashMap.put("day04",0);
        System.out.println(hashMap);
        //linkedHashmap<String,Integer> map2= new linkedHasMap<>();//默认记录插入顺序
        //linkedHashMap是一个特殊hashMap对象，底层基于链表记录元素的插入或者访问顺序
        LinkedHashMap<String,Integer> li = new LinkedHashMap<>(
                10,//初始容量
                0.75f,//负载因子，也称为扩容因子（官方推荐是0.75）
                true//true表示记录访问顺序
        );
        li.put("mike",98);
        li.put("tony",89);
        li.put("jack",99);
        System.out.println(li);//{mike=98, tony=89, jack=99}
        Integer mike = li.get("mike");//访问了Mike这个数据，
        System.out.println(li);//{tony=89, jack=99, mike=98}最后的数据是最近访问过的或者最新添加的数据，
        //最前的数据是最早添加的或者很久没有被访问过的数据

        //迭代集合中的元素（这里的每个元素都可以看成是一个entry对象）
        Set<Map.Entry<String , Integer>> entries = li.entrySet();
        for (Map.Entry<String,Integer> entry : entries){
            System.out.println(entry.getKey() + "\t" + entry.getValue());
        }

    }
}
